//引入框架
const express = require("express");
const fs = require("fs");
const path = require("path");
// 引入小图标模块
const icon = require("serve-favicon");
// 创建服务
const app = express();
// 开放监听端口
app.listen(3000, () => {
  console.log("3000端口已开启");
});
// 使用小图标中间键
app.use(icon("log_reg/favicon.ico"));

// 开放静态资源
app.use("/log_reg/static", express.static("log_reg/static"));

//开启接收post的中间件
app.use(express.urlencoded({ extended: false }));
//  时间中间件
app.use(function (req, res, next) {
  let d = new Date();
  let year = d.getFullYear();
  let month = d.getMonth() + 1;
  let day = d.getDate();
  let h = d.getHours();
  let m = d.getMinutes();
  let s = d.getSeconds();

  //我们应该把中间件公共的数据放到req上。因为每个路由的req对象都是同一个
  req.time = ` ${year}年${month}月${day}日 ${h}：${m}：${s}`;

  next(); //去找最终的匹配路由
});

// get定义登录路由
app.get("/login", (req, res) => {
  let filePath = path.join(__dirname, "log_reg/login.html");
  res.sendFile(filePath);
});

// get定义注册路由
app.get("/register", (req, res) => {
  let filePath = path.join(__dirname, "log_reg/register.html");
  res.sendFile(filePath);
});

// get 定义首页
app.get('/',(req,res)=>res.send('这是首页'))

// 获取绝对数据的路径
let filePath = path.join(__dirname, "persons.json");
// 读取数据内容
let str = fs.readFileSync(filePath, "utf8");

// 将json字符串转成json对象
let arr = JSON.parse(str);

// post定义路由  判断注册
app.post("/doregister", (req, res) => {
  // 获取用户输入的手机号
  //   let tel = req.body.tel;
  // 对象的解构赋值
  let { tel = "", pass = "", pass2 = "" } = req.body;
  // 去除所有的空格
  let re = /\s+|\s+/g;
  tel = tel.replace(re, "");
  pass = pass.replace(re, "");
  pass2 = pass2.replace(re, "");

  // 判断输入的内容是否为空
  if (!tel || !pass || !pass2) {
    res.send("请输入正确的格式");
    return;
  }

  // 判断用户名不能小于5为且不能大于15位
  if (tel.length < 5 || tel.length > 15) {
    res.send("用户名不小于5位且不大于 15位");
    return;
  }

  // 判断两次密码是否一致
  if (pass != pass2) {
    res.send("两次密码不一致");
    return;
  }

  let a = arr.find((item) => item.tel === tel);

  //   console.log(req.time);
  if (a) {
    // console.log(req.body);
    res.send("用后名已存在");
    return;
  } else {
    // let obj = {
    //   tel: req.body.tel,
    //   pass: req.body.pass,
    //   pass2: req.body.pass2,
    //   time: req.time,
    // };
    arr.push({ tel, pass, pass2, time: req.time });
    // console.log(req.body);
    // 写入文件里面
    fs.writeFileSync("persons.json", JSON.stringify(arr));
    res.send("注册成功");
  }
});

// post定义路由  判断登录
app.post("/dologin", (req, res) => {
  //   let { tel = "", pass = "" } = req.body;
  let user = req.body;
  let a = arr.find((item) => item.tel === user.tel && item.pass === user.pass);
  if (a) {
    res.send("登录成功");
  } else {
    res.send("用户名或密码错误");
  }
});


